class Solution {
public:
    int findJudge(int n, vector<vector<int>>& trust) {
        //@copyright Pei
        vector<int> indegree(n+3),outdegree(n+3);
        //vector长度定义为n+3是为了使得 indegree[n]有定义而不是混乱的内存空间
        for(int i=0;i<trust.size();i++)
        {
            //printf("trust[i][0]=%d\n",trust[i][0]);
            //printf("trust[i][1]=%d\n",trust[i][1]);
            //注意简单的调试技巧 每次遍历都打印一下，方便查找哪里出错
            outdegree[trust[i][0]]++;//使得 信任者的出度++
            //注意有些版本不能在偏移量里放变量
            indegree[trust[i][1]]++;//被信任者的入度++
        }
        int ans=-1;
        //用来存储答案，如果没有法官，那正好就返回-1
        for(int i=1;i<=n;i++)
        {
            if(indegree[i]==n-1&&outdegree[i]==0)//检查和法官的入度和出度的特点是不是相符
            {ans=i;break;}
        }
        return ans;
    }
};